package config

import (
	"github.com/Unknwon/goconfig"
	"log"
	"path/filepath"
)

//声明一个整个配置文件的结构体
type FullConfig struct {
	MainCfg     MainCfg
	ServiceScan ServiceScan
	CmdbApiCfg  CmdbApiCfg
	HostScanCfg HostScanCfg
}

//可以写成方法，也可以写成函数返回值的形式。这里写成函数返回值。得到整个配置文件。
func Configinit(dir string) FullConfig {
	cstr, err := filepath.Abs(dir)
	if err != nil {
		log.Panicln(err)
	}
	//初始化配置文件
	cfg, err := goconfig.LoadConfigFile(cstr)
	if err != nil {
		log.Println("读取配置文件失败[config.ini]")
		log.Panic(err)
	}

	//实例化一个FullConfig类型。
	var fullconfig FullConfig

	//调用个个配置段的方法。得到配置。
	maincfg.getconfig(cfg)
	servicescan.getconfig(cfg)
	cmdbapicfg.getconfig(cfg)
	hostscancfg.getconfig(cfg)
	//为fullconfig赋值
	fullconfig.MainCfg = maincfg
	fullconfig.HostScanCfg = hostscancfg
	fullconfig.CmdbApiCfg = cmdbapicfg
	fullconfig.ServiceScan = servicescan
	return fullconfig
}
